#include "bmp_writer.h"
#include "matrix.h"
#include <Image.h>


void BMPWriter::saveBMP(Matrix& m, string file, 
			double min_value, double max_value) {
	// Creo una imagen del tamanho que necesto con el fondo azul
	Image image(Geometry(m.rows(),m.cols()), "blue"); 

	// burocracia
	image.type(TrueColorType);
	image.modifyImage();

	for ( int i = 0; i < m.rows() ; ++i ) 
		for ( int j = 0; j < m.cols() ; ++j ) {
			Color c=getColor(m(i,j), min_value, max_value);
			image.pixelColor(i,j,c);
		}
	 
	// y la escribo 
	image.write(file);

}

Color BMPWriter::getColor(double v, 
		double min_value, double max_value) {
	ColorRGB res;

	if(v>=max_value) {
		res= ColorRGB (1,0,0);
	} else if(v<= min_value) {
		res= ColorRGB(0,0,1);
	} else {
		double colour= (v - min_value)/(max_value - min_value) * 2;
		if(colour <1){
			res= ColorRGB (0, colour, 1-colour);
		} else {
			res= ColorRGB (colour-1, 2-colour, 0);
		}
	}

	return res;
}
